<?php

// [ 支付 ]

namespace app\index\controller;
use think\Controller;
use think\Db;

class Pay extends Controller
{
    // 续费
    // http://sg.51hub.cn/pay
    // http://sg.io/pay
    public function index()
    {
        return $this->fetch();
    }

    // 支付回调
    // http://sg.51hub.cn/pay/callback
    public function callback()
    {
        $postXml = $GLOBALS["HTTP_RAW_POST_DATA"];
        if ( !empty($postXml) ) {
            $postObj = simplexml_load_string($postXml, 'SimpleXMLElement', LIBXML_NOCDATA);
            $postArr = json_decode(json_encode($postObj),true);

            $returnCode = $postArr['return_code'];
            if ('SUCCESS' == $returnCode) {
                $resultCode = $postArr['result_code'];
                if ('SUCCESS' == $resultCode) {
                    $out_trade_no = $postArr['out_trade_no'];
                    // -----------------------------------------------------------------------------------------------
                    $ret = Db::name('order')->where('out_trade_no',$out_trade_no)->where('status',0)->find();
                    if ( !is_null($ret) ) {
                        Db::name('order')->where('id',$ret['id'])
                                         ->update(['status'=>1,'update_time'=>time()]);
                        $expire = Db::name('member')->where('mobile',$ret['mobile'])->value('expire');
                        if ( time() > $expire ) {
                            // 当前时间开始计算
                            Db::name('member')
                            ->where('mobile',$ret['mobile'])
                            ->update([ 'expire'=>time() + $ret['days'] * 86400]);
                        } else {
                            // 时间累加
                            Db::name('member')
                            ->where('mobile',$ret['mobile'])
                            ->update([ 'expire'=>['exp','expire + ' . $ret['days'] * 86400] ]);
                        }
                    }
                    // -----------------------------------------------------------------------------------------------
                }
            }
        }

        $msg = '<xml>
                  <return_code><![CDATA[SUCCESS]]></return_code>
                  <return_msg><![CDATA[OK]]></return_msg>
                </xml>';
        return $msg;
    }
}